package PEncapsulation;

//什么是多态？    --->    同类型的对象，执行同一个行为，会表现出不同的形态。
//多态的体现：    表现形式：父类类型 对象名 = 子类对象   或者  接口 对象名 = 实现类对象
//1. 方法的重载和重写。
//2. 对象的多态性。
//多态的前提：
//1. 必须是类与类之间的关系。要么继承，要么实现。
//2. 有覆盖。
//多态的好处：
//1. 多态的出现大大的提高程序的扩展性。

//多态调用成员变量的特点：（多态的对象创建方式：Fu f = new Zi();）
//1. 编译看左边，运行看左边。
    //java编译代码的时候，会看左边的父类中有没有该变量。
    //如果有，编译通过，如果没有，编译失败。
//2. 编译时，如果父类中没有该变量，则编译失败。
//3. 运行时，执行的是父类中的变量。

//多态调用成员方法的特点：
//1. 编译看左边，运行看右边。
    //java编译代码的时候，会看左边的父类中有没有该方法。
    //如果有，编译通过，如果没有，编译失败。
//2. 编译时，如果父类中没有该方法，则编译失败。
//3. 运行时，执行的是子类重写的方法。

public class Test {
    public static void main(String[] args) {
            Student s = new Student();
            s.setName("张三");
            s.setAge(20);

            Teacher t = new Teacher();
            t.setName("李四");
            t.setAge(30);

            Administration a = new Administration();
            a.setName("王五");
            a.setAge(40);

            register(s);
            register(t);
            register(a);

            Person p = new Student();
    }
    public static void register(Person p) {
        p.show();
    }
}